<?php
App::uses('AppController', 'Controller');
/**
 * Fornecedores Controller
 *
 * @property Fornecedore $Fornecedore
 * @property Endereco $Endereco
 * @property Ramo $Ramo
 * @property Cidade $Cidade

 */
class FornecedoresController extends AppController {

	public $components = array( 'RequestHandler' );
	public $helpers = array('Js');
	
	public function beforeFilter(){
		$this->loadModel('Endereco');
		$this->loadModel('Cidade');
		$this->loadModel('Ramo');
	}
/**
 * index method
 *
 * @return void
 */
	public function index() {
		#filter results
		$this->Filter->addFilters(
			array(
				'filter1' => array(
					'Fornecedore.nome' => array(
						'operator' => 'LIKE',
						'value' => array(
							'before' => '%', // opcional
							'after'  => '%'  // opcional
						)
					)
				),
				'filter2' => array(
					'Fornecedore.representante' => array(
							'operator' => 'LIKE',
							'value' => array(
									'before' => '%', // opcional
									'after'  => '%'  // opcional
							)
					)
				)
			)
		);
		
		$this->Filter->setPaginate('order', 'Fornecedore.nome ASC'); // opcional
		$this->Filter->setPaginate('limit', 15);              // opcional
		
		// Define conditions
		$this->Filter->setPaginate('conditions', $this->Filter->getConditions());
		
		$this->Fornecedore->recursive = 0;
		$this->set('fornecedores', $this->paginate());
	}

	

	
/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function view($id = null) {
		if (!$this->Fornecedore->exists($id)) {
			throw new NotFoundException(__('Invalid fornecedore'));
		}
// 		$options = array('conditions' => array('Fornecedore.' . $this->Fornecedore->primaryKey => $id));
// 		$this->set('fornecedore', $this->Endereco->find('first', $options));
		
		$options = array('conditions' => array('Fornecedore.' . $this->Fornecedore->primaryKey => $id)				
				,'fields'=>array('Fornecedore.id', 'Fornecedore.nome', 'Fornecedore.cnpj',
				 'Fornecedore.telefone', 'Fornecedore.email','Fornecedore.representante',
				 'Fornecedore.site', 'Fornecedore.ramo_id', 'Fornecedore.endereco_id',
				 'Endereco.id', 'Endereco.rua', 'Endereco.numero', 'Endereco.cidade_id',
				 'Cidade.id', 'Cidade.nome'));
		
		$fornecedore = $this->Endereco->find('first', $options);
		$this->set(compact('fornecedore'));
		
		$op  = array('conditions' =>array('Ramo.' . $this->Ramo->primaryKey=> $fornecedore['Fornecedore']['ramo_id'])
				,'fields'=>array('Ramo.id', 'Ramo.descricao'));
		
		$this->set('ramos',$this->Ramo->find('first',$op));
		
		
// 		$cidades = $this->Cidade->find('list', array(
// 				'fields' => array('Cidade.id', 'Cidade.nome'),
// 				'conditions' =>
// 				array('Cidade.estado_id' => 12),
// 				'recursive' => 0));
// 		$this->set(compact('cidades'));
		
		
	}

/**
 * add method
 *
 * @return void
 */
	public function add() {
		
		if ($this->request->is('post')) {
			
			
	//		$this->Fornecedore->create();
			
			if($this->Fornecedore->afterValidate()){
				$ender = $this->Fornecedore->Endereco->save($this->request->data);
				if (!empty($ender)) {
					$this->request->data['Fornecedore']['endereco_id'] = $this->Endereco->id;
					if ($this->Fornecedore->save($this->request->data['Fornecedore'])) {
						$this->Session->setFlash(__('O Fornecedor foi salvo com sucesso.'), 'default', array('class' => 'alert alert-success'));
						return $this->redirect(array('action' => 'index'));
					} else {
						//$this->Session->setFlash(__('The fornecedore could not be saved. Please, try again.'), 'default', array('class' => 'alert alert-danger'));
						$this->Session->setFlash(__('O fornecedor nao pode ser salvo.'), 'default', array('class' => 'alert alert-danger'));
					}
				}else{
					$this->Session->setFlash(__('O Endereco nao pode ser salvo.'), 'default', array('class' => 'alert alert-danger'));
					
				}
			}else{
					$this->Session->setFlash(__('Ocorreu um erro na validacao, corrija os erros e tente novamente.'), 'default', array('class' => 'alert alert-danger'));
					
				}
		}
		
		$ramos = $this->Fornecedore->Ramo->find('list');
		$this->set(compact('ramos'));
		
		$cidades = $this->Cidade->find('list', array(
				'fields' => array('Cidade.id', 'Cidade.nome'),
				'conditions' =>
				array('Cidade.estado_id' => 12),
				'recursive' => 0));
		$this->set(compact('cidades'));
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit($id = null) {
		if (!$this->Fornecedore->exists($id)) {
			throw new NotFoundException(__('Invalid fornecedore'));
		}
		
		if ($this->request->is('post') || $this->request->is('put')) {
			if ($this->Fornecedore->saveAssociated($this->request->data)) {
				#aqui foi salvo as associacoes corretamente. porém salvando pelo endereco.
				$this->Session->setFlash(__("Dados do fornecedor atualizados com sucesso."), 'default', array('class' => 'alert alert-success'));
				return $this->redirect(array('action' => 'index'));
			}else {
				$this->Session->setFlash(__("O fornecedor n�o pode ser salvo. Por favor, tente novamente."), 'default', array('class' => 'alert alert-danger'));
			}
		} 
		else {
			$options = array('conditions' => array('Fornecedore.' . $this->Fornecedore->primaryKey => $id));
			//$this->request->data = $this->Fornecedore->find('first', $options);
			$this->request->data = $this->Fornecedore->find('first', $options);
		}
		
		
		$ramos = $this->Fornecedore->Ramo->find('list');
		$this->set(compact('ramos'));
		
		$cidades = $this->Cidade->find('list', array(
				'fields' => array('Cidade.id', 'Cidade.nome'),
				'conditions' =>
				array('Cidade.estado_id' => 12),
				'recursive' => 0));
		$this->set(compact('cidades'));
		
// 		$enderecos = $this->Fornecedore->Endereco->find('list');
// 		$this->set(compact('enderecos'));
	}

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete($id = null) {
		$this->Fornecedore->id = $id;
		if (!$this->Fornecedore->exists()) {
			throw new NotFoundException(__('Invalid fornecedore'));
		}
		$this->request->onlyAllow('post', 'delete');
		if ($this->Fornecedore->delete()) {
			$this->Session->setFlash(__('The fornecedore has been deleted.'), 'default', array('class' => 'alert alert-success'));
		} else {
			$this->Session->setFlash(__('The fornecedore could not be deleted. Please, try again.'), 'default', array('class' => 'alert alert-danger'));
		}
		return $this->redirect(array('action' => 'index'));
	}
}
